#define _CRT_SECURE_NO_WARNINGS
#include"test.h"
void SQinit(SQ* p)
{
	assert(p);
	p->tou = NULL;
	p->wei = NULL;
	p->size = 0;
}
void SQget(SQ* p)
{
	assert(p);
	SL* q = p->tou;
	while (q)
	{
		SL* arr = q->next;
		free(q);
		q = arr;
	}
	p->tou= p->wei = NULL;
	p->size = 0;
}
SL* chuang(leixing x)
{
	SL* arr = (SL*)malloc(sizeof(SL));
	if (arr == NULL)
	{
		perror("malloc arr");
		return;
	}
	arr->next = NULL;
	arr->x = x;
	return arr;
}
void SQcha(SQ* p, leixing x)
{
	assert(p);
	if (p->tou == NULL)
	{
		p->tou = p->wei = chuang(x);
	}
	else
	{
		SL* arr= chuang(x);
		p->wei->next = arr;
		p->wei = arr;
	}
	p->size++;
}
void SQshan(SQ* p)
{
	assert(p);
	assert(p->tou);
	if (p->tou == p->wei)
	{
		free(p->tou);
		p->tou = p->wei = NULL;
	}
	else
	{
		SL* arr = p->tou->next;
		free(p->tou);
		p->tou = arr;
	}
	p->size--;
}
leixing SQtyuan(SQ* p)
{
	assert(p);
	assert(p->tou);
	return p->tou->x;
}
leixing SQwyuan(SQ* p)
{
	assert(p);
	assert(p->tou);
	return p->wei->x;
}
int SQquyuan(SQ* p)
{
	assert(p);
	assert(p->tou);
	return p->size;
}
bool SQkong(SQ* p)
{
	assert(p);
	return p->size == 0;
}
